package main

import (
	"bufio"
	"os"
	"strconv"
)

//Mount contains all metadata for a single filesystem mount.

type Mount struct {
	Device string `json:"device"` //因为需要进行加护 url json pdf word  exe default  xml
	DeviceType string `json:"device_type"` //设备类型
	Mountpoint string `json:"mount_point"` //挂载点
	FsType string `json:"fs_type"` //文件类型
	Type string `json:"type"` // 具体的平台类型
	Opts string `json:"opts"` // 额外的信息 opt string write open path err
	Total uint64 `json:"total"` // total信息
	Free uint64 `json:"free"` // free释放信息
	Used uint64 `json:"used"` // 使用信息
	Inodes uint64 `json:"inodes"` //
	InodesFree uint64 `json:"inodes_free"`
	InodesUsed uint64 `json:"inodes_used"`
	Blocks uint64 `json:"blocks"`
	BlockSize uint64 `json:"block_size"`
	Metadata interface{} `json:"-"`
}
//以 函数为准信息
// readLines 读取一行信息处理方式
func readLines(filename string)([]string,error)  {
	file, err := os.Open(filename)
	if err != nil {
		return nil, err
	}
	defer file.Close()

	scanner := bufio.NewScanner(file) //对文件 NewScanner 对文件信息
	var s []string
	for scanner.Scan() {
		s = append(s,scanner.Text())
	}
	return s,scanner.Err()
}
func unescapeFsTab(path string) string  {
	escaped, err := strconv.Unquote(`"`+ path + `"`)
	if err !=nil{
		return path
	}
	return escaped
}
//函数返回信息 不一定是错误
func byteToString(orig []byte)  string {
	n := -1
	l := -1
	for i, b := range orig {
		// skip left side null
		if l == -1 && b == 0 {
			continue
		}
		if l == -1 {
			l = i
		}
		if b == 0 {
			break
		}
		n = i + 1
	}
	if n == -1 {
		return string(orig)
	}
	return string(orig[1:n])
}

func intToString(orig []int8) string  {
	ret := make([]byte,len(orig))
	size := -1
	for i, o := range orig {
		if o == 0 {
			size = i
			break
		}
		ret[i] = byte(o)
	}
	if size == -1 {
		size = len(orig)
	}
	return string(ret[0:size])
}